iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
0
自我挑戰組

Codewar 進進出出 JS/Ruby系列 第 6

不要結巴!!!

  • 分享至 

  • xImage
  •  

題目:
(6 級) String array duplicates
在這個 Kata,你會得到一組字串的陣列,而你的任務是移除連續且重複的字母。

範例:

["abracadabra","allottee","assessee"] => ["abracadabra","alote","asese"]

["kelless","keenness"] => ["keles","kenes"]

字串皆會是小寫,且沒有空白字元。

思考方式:

  1. 把陣列中的每個字串拿出來處理可以用 map
  2. 拿出來的字串拆開成陣列
  3. 依序比較每個字元是否與前一個字元相等

Ruby 解法:

def dup(arr)
  # 使用 map 處理陣列
  arr.map { |str|
	
    # 把陣列中的每個字串單獨拆開成一個陣列
    new_arr = str.split("")

    # 使用 select method 挑選出需要的字母
    # 同時使用 with_index method 做前後兩個字母的比較
    new_arr.select.with_index { |char, index|
		
      # 挑選第一個字母 或 與前一個字母不重複的字母
      char if (index == 0) or (new_arr[index] != new_arr[index-1])
			
    # 挑選完之後用 join method 轉回字串
    }.join
  }
end

JavaScript 解法:

function dup(s) {
  // 使用 map 處理陣列
  let result = s.map(str => {
	
    // 把陣列中的每個字串單獨拆開成一個陣列
    let arr = str.split("")

    // 使用 filter function 挑選出需要的字母
    arr = arr.filter((char, index) => {
		
      // 挑選第一個字母 或 與前一個字母不重複的字母
      if ((index === 0) || (arr[index] != arr[index-1])) {
        return char;
      }
    });

    // 挑選完之後用 join function 轉回字串
    return arr.join("")
  });
	
  return result
};

上一篇
Sum of Digits / Digital Root
下一篇
找到單身狗
系列文
Codewar 進進出出 JS/Ruby30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言